<?php
namespace App\Http\Controllers\Admin;

use App\Http\Query\CategoryQuery;
use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
use Log;
use SplFileObject;

class CategoryController extends Controller
{

    /**
     * カテゴリ情報
     * カテゴリ情報を登録する
     */
    public function addCategoryMaster(Request $request)
    {
        try{
            $CategoryMaster = new CategoryQuery();
            $categoryInfo = $request->input('CategoryMaster');
            $rec_num = $request->input("rec_num");

            for ($i = 0; $i < $rec_num; $i ++) {
                $categoryInfo = array();
                $categoryInfo["category_id"] = $request->input("category_id_" . $i);
                $categoryInfo["category_code"] = $request->input("category_code_" . $i);
                $categoryInfo["category_name"] = $request->input("category_name_" . $i);
                $categoryInfo["category_en"] = $request->input("category_en_" . $i);
                $categoryInfo["category_image"] = $request->input("category_image_" . $i);
                if (empty($categoryInfo["category_name"]) || empty($categoryInfo["category_code"])) {
                    continue;
                }
                $flag = $CategoryMaster->addCategoryMaster($categoryInfo);
            }

            if($flag){
                return redirect('/admin/category')->with('success', '添加成功！');
            }

        }catch (\Exception $e){
            \Log::error($e->getFile()." Line:".$e->getLine()." Msg:".$e->getMessage());
        }
    }

    /**
     * カテゴリ情報
     * カテゴリ情報を削除する
     */
    public function delCategoryMaster(Request $request)
    {
        try{
            $code = $request->input('category_id');
            $CategoryMaster = new CategoryQuery();
            $flag = $CategoryMaster->delCategoryMaster($code);

            if ($flag) {
                return redirect('/admin/category')->with('success', '削除成功！');
            }
        }catch (\Exception $e){
            \Log::error($e->getFile()." Line:".$e->getLine()." Msg:".$e->getMessage());
        }
    }


    /**
     * カテゴリ情報
     * カテゴリ情報 CSV取り組み
     */
    public function inputCsvCategoryMaster(Request $request)
    {
        try{
            setlocale(LC_ALL, 'ja_JP.UTF-8');
            $uploaded_file = $request->file('csv_file');
            $filecsv = $_FILES['csv_file'];

            $file_type = substr(strstr($filecsv['name'], '.'), 1);
            if ($file_type != 'csv') {
                echo "<script type=\"text/javascript\">alert(\"ファイルフォーマットのエラーです,もう一度アップロードしてください!\");window.history.go(-1);</script>";
                exit();
            }
            if ($filecsv['size'] <= 3 ) {
                echo "<script type=\"text/javascript\">alert(\"CSVファイルが空数値である!\");window.history.go(-1);</script>";
                exit();
            }

            // アップロードしたファイルの絶対パスを取得
            $file_path = $request->file('csv_file')->path($uploaded_file);
            $file = new SplFileObject($file_path);
            $file->setFlags(SplFileObject::READ_CSV);

            $row_count = 1;
            $flag = false;
            // ここで値をデータベースに保存したりする
            $CategoryMaster = new CategoryQuery();
            foreach ($file as $row) {
                if (isset($row[0]) && ! empty($row[0])) {
                    // 1行目のヘッダーは取り込まない
                    if ($row_count > 1) {
                        if (isset($row[0]) && ! empty($row[0])) {
                            $category_code = mb_convert_encoding($row[0], 'UTF-8', 'SJIS');
                        }
                        if (isset($row[1]) && ! empty($row[1])) {
                            $category_name = mb_convert_encoding($row[1], 'UTF-8', 'SJIS');
                        }
                        if (isset($row[2]) && ! empty($row[2])) {
                            $category_en = mb_convert_encoding($row[2], 'UTF-8', 'SJIS');
                        }
                        if (isset($row[3]) && ! empty($row[3])) {
                            $category_image = mb_convert_encoding($row[3], 'UTF-8', 'SJIS');
                        }
                        if(empty($category_name)) {
                            continue;
                        }
                        $param = array($category_code, $category_name, $category_en, $category_image);
                        $flag = $CategoryMaster->addCsvCategoryMaster($param);
                    }
                }

                $row_count ++;
            }
            if ($flag) {
                return redirect('/admin/category')->with('success', '取込成功！');
            } else {
                echo "<script type=\"text/javascript\">alert(\"Csvファイルエラー!\");window.history.go(-1);</script>";
                exit();
            }
        }catch (\Exception $e){
            \Log::error($e->getFile()." Line:".$e->getLine()." Msg:".$e->getMessage());
        }
    }

    /**
     * カテゴリ情報
     * 一覧表示
     */
    function index(Request $request)
    {
        try{
            $CategoryMaster = new CategoryQuery();
            $categoryInfo = $CategoryMaster->getCategoryInfoByLoginId();
            if (! empty($categoryInfo)) {
                return view('admin.category', array(
                    'categoryInfos' => $categoryInfo
                ));
            } else {
                return view('admin.category', array(
                    'categoryInfos' => array()
                ));
            }
        }catch (\Exception $e){
            \Log::error($e->getFile()." Line:".$e->getLine()." Msg:".$e->getMessage());
        }
    }
}
